
#ifndef _TTG_UTILS_INTERNAL_SETS_
#define _TTG_UTILS_INTERNAL_SETS_
#include "Common/Definitions.h"

#include "Parameters.h"

namespace ttg_internal
{
	namespace utils
	{
		//Provides access to internal parameter sets (like a "Pipelines", "Services", etc).
		class InternalSets :public ttg::utils::ParameterSet
		{
			private:
				ttg::utils::ParameterSet *pipelines;
				ttg::utils::ParameterSet *services;
			public:
				//Creates set with internal sub-sets.
				inline InternalSets()
					:ttg::utils::ParameterSet("Internal settings")
				{
					pipelines = new ttg::utils::ParameterSet("Pipelines", this);
					services = new ttg::utils::ParameterSet("Services", this);
				}
				//Returns set with information about all pipelines.
				inline ttg::utils::ParameterSet *getPipelines()
				{ return pipelines; }
				//Returns set with information about all services.
				inline ttg::utils::ParameterSet *getServices()
				{ return services; }
				~InternalSets()
				{
					SAFE_DELETE(pipelines);
					SAFE_DELETE(services);
				}
		};
	}
}

#endif
